package com.dj.merchant.service.impl;

import cn.hutool.core.bean.BeanUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.util.StrUtil;
import com.dj.merchant.dto.StoreInfoCreateData;
import com.dj.merchant.mapper.StoreExtendInfoMapper;
import com.dj.merchant.mapper.StoreInfoMapper;
import com.dj.merchant.model.*;
import com.dj.merchant.service.StoreInfoService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional;

import java.util.Date;
import java.util.List;

/**
 * @Author : Jimmy
 * @Date : 2020/12/14 21:10
 * @Desc : dj-version-tag
 **/
@Service
public class StoreInfoServiceImpl implements StoreInfoService {

    @Autowired
    private StoreInfoMapper storeInfoMapper;

    @Autowired
    private StoreExtendInfoMapper storeExtendInfoMapper;


    private Date getNow(){
        String formatNow = DateUtil.format(new Date(), "yyyy-MM-dd HH:mm:ss");
        Date now = DateUtil.parse(formatNow);
        return now;
    }

    /**
     * 创建店铺
     * @param storeInfoCreateData
     * @return
     * 创建店铺 保存
     */
    @Override
    @Transactional
    public Long createStore(StoreInfoCreateData storeInfoCreateData) {
        Date now = getNow();
        StoreInfo storeInfo = new StoreInfo();
        BeanUtil.copyProperties(storeInfoCreateData,storeInfo);
        storeInfo.setCreateTime(now);
        storeInfo.setUpdateTime(now);
        storeInfo.setUpdateUser(storeInfoCreateData.getCreateUser());
        storeInfoMapper.insert(storeInfo);

        String description = storeInfoCreateData.getDescription();
        if (!StrUtil.hasBlank(description)){
            StoreExtendInfo storeExtendInfo = new StoreExtendInfo();
            BeanUtil.copyProperties(storeInfo,storeExtendInfo);
            storeExtendInfo.setStoreId(storeInfo.getStoreId());
            storeExtendInfo.setDescription(description);
            storeExtendInfo.setUpdateUser(storeInfoCreateData.getCreateUser());
            storeExtendInfoMapper.insert(storeExtendInfo);
        }

        return storeInfo.getStoreId();
    }

    /**
     * 查询店铺
     * @param storeInfoCreateData
     * @return
     */
    @Override
    public List<StoreInfo> selectStore(StoreInfoCreateData storeInfoCreateData) {
        StoreInfo storeInfo = new StoreInfo();
        BeanUtil.copyProperties(storeInfoCreateData,storeInfo);
        return storeInfoMapper.selectBySearch(storeInfo);
    }

    /**
     * 更新店铺
     * @param storeInfoCreateData
     * @return
     */
    @Override
    @Transactional
    public Integer updateStore(StoreInfoCreateData storeInfoCreateData) {
        Date now = getNow();
        StoreInfo storeInfo = new StoreInfo();
        BeanUtil.copyProperties(storeInfoCreateData,storeInfo);
        storeInfo.setUpdateTime(now);
        int keySelective = storeInfoMapper.updateByPrimaryKeySelective(storeInfo);

        return keySelective;
    }


    @Override
    public StoreInfo getStoreInfo(Long storeId) {
        StoreInfo storeInfo = storeInfoMapper.selectByPrimaryKey(storeId);
        return storeInfo;
    }

    @Override
    public int updateA(Long id,Short status) {
        StoreInfo storeInfo = new StoreInfo();
        storeInfo.setApproveStatus(status);
        storeInfo.setStoreId(id);
        return storeInfoMapper.updateByPrimaryKeySelective(storeInfo);
    }

    @Override
    public int openA(Long id, Short status) {
        StoreInfo storeInfo = new StoreInfo();
        storeInfo.setActiveStatus(status);
        storeInfo.setStoreId(id);
        return storeInfoMapper.updateByPrimaryKeySelective(storeInfo);
    }

    @Override
    public Integer saveStore(StoreTypeMaster storeTypeMaster) {

        StoreTypeMaster storeType = new StoreTypeMaster();
        storeType.setCreateTime(new Date());
//        storeType.setUpdateTime();
        return null;
    }
}
